#include "Config.h"

Config::Config(){
	//Config du vaisseau
	this->vaisseauStart.setPositionX(45);
	this->vaisseauStart.setPositionY(25);

	//Dimention / Position des interfaces de jeu
	this->j.cd=0;
	this->j.ld=0;
	this->j.cf=90;
	this->j.lf=35;
	this->j.couleur=14;

	this->i.cd=91;
	this->i.ld=0;
	this->i.cf=120;
	this->i.lf=50;
	this->i.couleur=6;

	this->s.cd=0;
	this->s.ld=36;
	this->s.cf=90;
	this->s.lf=50;
	this->s.couleur=6;

	//Position des menus
	this->menuCoord.X = 30;
	this->menuCoord.Y = 20;

	//Config de control
	this->controls[CTL_GAUCHE] = VK_LEFT;
	this->controls[CTL_DROITE] = VK_RIGHT;
	this->controls[CTL_HAUT] = VK_UP;
	this->controls[CTL_BAS] = VK_DOWN;
	this->controls[CTL_TIRER] = VK_SPACE;

	//Configurer la fenetre shell
	ui.setDimensionFenetre(0, 0, CONF_WINDOWX, CONF_WINDOWY+1);
	ui.curseurVisible(false);

	//Input Handler
	this->hStdin = GetStdHandle(STD_INPUT_HANDLE);
	SetConsoleMode(conf.hStdin, 0);
}

void Config::drawUI(){
	ui.cadre(this->j.cd, this->j.ld, this->j.cf, this->j.lf, this->j.couleur);
	ui.cadre(this->i.cd, this->i.ld, this->i.cf, this->i.lf, this->i.couleur);
	ui.cadre(this->s.cd, this->s.ld, this->s.cf, this->s.lf, this->s.couleur);
}

void Config::drawCadre(Cadre c){
	ui.cadre(c.cd, c.ld, c.cf, c.lf, c.couleur);
}

COORD Config::drawCadreCentrer(int largeur, int hauteur){
	Cadre TmpCadre;
	COORD coin;
	TmpCadre.cd = (CONF_WINDOWX / 2) - (largeur / 2);
	TmpCadre.cf = (CONF_WINDOWX / 2) + (largeur / 2);
	TmpCadre.ld = (CONF_WINDOWY / 2) - (hauteur / 2);
	TmpCadre.lf = (CONF_WINDOWY / 2) + (hauteur / 2);
	TmpCadre.couleur = 7;
	this->drawCadre(TmpCadre);
	coin.X = (CONF_WINDOWX / 2) - (largeur / 2) + 1;
	coin.Y = (CONF_WINDOWY / 2) - (hauteur / 2) + 1;
	return coin;
}

int Config::getControl(int ctl){
	return this->controls[ctl];
}
void Config::setControl(int ctl, int touche){
	this->controls[ctl] = touche;
}

COORD Config::getMenuCoord(){
	return this->menuCoord;
}

void Config::drawQuestion(string question){
	Cadre c;
	c.cd = (CONF_WINDOWX/2-20);
	c.cf = (CONF_WINDOWX/2+20);
	c.ld = (CONF_WINDOWY/2-5);
	c.lf = (CONF_WINDOWY/2+5);
	c.couleur = 3;
	this->drawCadre(c);
	this->ui.gotoXY(CONF_WINDOWX/2-18,CONF_WINDOWY/2-3);
	cout << question;
}

Cadre Config::getCadreJeu(){
	return this->j;
}

void Config::clearBox(int x, int y, int xLen, int yLen){
	this->ui.color(0);
	for(int i = 0; i < yLen; i++){
		this->ui.gotoXY(x,y+i);
		for(int j = 0; j < xLen; j++){
			cout << " ";
		}
	}
	this->ui.color(7);
}

void Config::drawStyleText(int x, int y, int color, char* text){
	this->ui.gotoXY(x,y);
	this->ui.color(color);
	cout << text;
	this->ui.color(7);
}